package DongTai.RentCar.src.cars;

import DongTai.RentCar.src.cars.Car;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class RentMgrSys {
    static ArrayList<Car> bmw = new ArrayList<>();  // 宝马车集合
    static ArrayList<Car> buick = new ArrayList<>();    // 别克车集合
    static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        // 将现有车型封装成对象
        Car BMWX6 = new Car("京NY28588", "宝马", "X6", 800);
        Car BMW550i = new Car("京CNY3284", "宝马", "550i", 600);
        Car BuickL = new Car("京NT37465", "别克", "林荫大道", 300);
        Car BuickGL8 = new Car("京NT96968", "别克", "GL8", 600);
        // 宝马品牌车集合
        bmw.add(BMWX6);
        bmw.add(BMW550i);
        // 别克品牌车集合
        buick.add(BuickL);
        buick.add(BuickGL8);
        // 交互界面
        while (true) {
            try {
                rentMgr();  // 租赁界面
                System.out.print("按任意键继续或输入exit退出:");
                scanner.nextLine();
                if (scanner.nextLine().equals("exit")) return;
            } catch (Exception e) {
                System.out.println("输入错误");
                scanner.nextLine(); // 清除缓存区 避免出现死循环 一直输入输入错误
            }
        }
    }

    /**
     * 租赁界面
     * @throws Exception
     */
    public static void rentMgr() throws Exception {
        // 租赁界面
        System.out.println("******欢迎使用汽车租赁系统******");
        System.out.println("1.轿车");
        System.out.print("请选择您要租赁的汽车类型：");
        int carModel = scanner.nextInt();   // 汽车类型
        if (carModel == 1) {
            System.out.println("1.宝马   2.别克");
            System.out.print("请选择您要租赁的轿车品牌：");
            switch (scanner.nextInt()) {
                case 1: // 1 为宝马车
                    carBrandWay(bmw);
                    break;
                case 2: // 2 为别克车
                    carBrandWay(buick);
                    break;
                default:    // 输入其他数据 抛出异常
                    throw new Exception();
            }
        }else { // 选择其他车型抛出异常
            throw new Exception();
        }
    }
    /**
     * 处理特定品牌车辆的选择和租赁流程
     * @param carBrands 包含特定品牌车辆的集合
     */
    public static void carBrandWay(ArrayList<Car> carBrands) {
        int i = 1; // 计数器
        Iterator<Car> iterator = carBrands.iterator();    // 迭代器
        while (iterator.hasNext()) {
            Car car = iterator.next();
            System.out.print(i + "." + car.getType() + "\t");  // 打印车型
            i++;
        }
        System.out.println();
        System.out.print("请选择您要租赁的汽车型号: ");   // 选择型号
        int carType = scanner.nextInt();
        try {
            Car chooseCar = carBrands.get(carType - 1); // 获得当前型号的车的对象
            chooseCar.leaseOutFlow();   // 调用该车的租赁流程 完成租赁
        } catch (Exception e) {
            System.out.println("选择错误!");
            carBrandWay(carBrands);
        }
    }
}
